Notes and format last updated Apr 9, 2020
This page shows COVID data broken down into regions that affect our family. It pulls from publicly available raw data from the NY Times, which is reported daily. It’s on a one-day lag, so when you see this report, the most recent day included will be the day prior.
Finally, the last section compares data from states that have and have not enacted state-wide stay-at-home orders, trying to see if there are any effects of the orders. It’s a work in progress, and there are more extensive notes in that section.
agg.cases.US <- state.raw[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.US
agg.cases.US[, total_cases_prev3 := temp$total_cases[match(agg.cases.US$date - 3, temp$date)]]
agg.cases.US[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.US[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.US
agg.cases.US[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.US$date - 1, temp$date)]]
agg.cases.US[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.US[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.US.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = "United States",
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.US.plot
use.state <- "Washington"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev3 := temp$total_cases[match(agg.cases.state$date - 3, temp$date)]]
agg.cases.state[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.state[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.state
agg.cases.state[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.state[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.state.plot
use.state <- "California"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev3 := temp$total_cases[match(agg.cases.state$date - 3, temp$date)]]
agg.cases.state[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.state[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.state
agg.cases.state[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.state[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.state.plot
use.state <- "South Carolina"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev3 := temp$total_cases[match(agg.cases.state$date - 3, temp$date)]]
agg.cases.state[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.state[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.state
agg.cases.state[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.state[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.state.plot
use.state <- "Tennessee"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev3 := temp$total_cases[match(agg.cases.state$date - 3, temp$date)]]
agg.cases.state[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.state[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.state
agg.cases.state[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.state[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.state.plot
agg.deaths.US <- state.raw[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.US
agg.deaths.US[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.US$date - 3, temp$date)]]
agg.deaths.US[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.US[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.US
agg.deaths.US[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.US$date - 1, temp$date)]]
agg.deaths.US[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.US[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.US.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = "United States",
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.US.plot
use.state <- "Washington"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.state$date - 3, temp$date)]]
agg.deaths.state[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.state[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.state
agg.deaths.state[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.state[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.state.plot
use.state <- "California"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.state$date - 3, temp$date)]]
agg.deaths.state[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.state[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.state
agg.deaths.state[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.state[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.state.plot
use.state <- "South Carolina"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.state$date - 3, temp$date)]]
agg.deaths.state[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.state[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.state
agg.deaths.state[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.state[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.state.plot
use.state <- "Tennessee"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.state$date - 3, temp$date)]]
agg.deaths.state[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.state[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.state
agg.deaths.state[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.state[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.state.plot
Table of total confirmed cases per million residents (all 50 states)
state.per.cap <- merge(state.raw, stay_dates, by = "state", all.x = T)
state.per.cap[, casesPerMillion := as.integer(cases/population * 1000000)]
date.cut <- max(state.per.cap$date)
state.per.cap.agg <- state.per.cap[date == date.cut]
state.per.cap.agg <- state.per.cap.agg[order(-casesPerMillion), c("state", "casesPerMillion")]
state.per.cap.agg[, casesPerMillion := comma(casesPerMillion)]
state.per.cap.agg
## state casesPerMillion
## 1: New York 8,221
## 2: New Jersey 5,744
## 3: Louisiana 3,932
## 4: Massachusetts 2,748
## 5: Connecticut 2,744
## 6: District of Columbia 2,157
## 7: Michigan 2,140
## 8: Rhode Island 1,630
## 9: Pennsylvania 1,435
## 10: Illinois 1,295
## 11: Washington 1,261
## 12: Delaware 1,241
## 13: Colorado 1,076
## 14: Georgia 1,025
## 15: Maryland 1,023
## 16: Vermont 1,006
## 17: Indiana 943
## 18: Nevada 797
## 19: Florida 783
## 20: Mississippi 759
## 21: Idaho 757
## 22: Tennessee 652
## 23: Utah 617
## 24: New Hampshire 602
## 25: Alabama 578
## 26: Missouri 576
## 27: South Carolina 542
## 28: California 511
## 29: South Dakota 505
## 30: Wisconsin 495
## 31: Virginia 473
## 32: New Mexico 471
## 33: Ohio 471
## 34: Oklahoma 425
## 35: Maine 416
## 36: Arizona 414
## 37: Wyoming 412
## 38: Iowa 402
## 39: Texas 392
## 40: Kansas 383
## 41: Arkansas 379
## 42: North Dakota 352
## 43: North Carolina 348
## 44: Kentucky 341
## 45: Montana 331
## 46: Alaska 318
## 47: Oregon 313
## 48: Hawaii 310
## 49: Nebraska 307
## 50: West Virginia 292
## 51: Minnesota 220
## 52: Puerto Rico 213
## 53: American Samoa <NA>
## 54: Guam <NA>
## 55: Northern Mariana Islands <NA>
## 56: Virgin Islands <NA>
## state casesPerMillion
state.per.cap.agg[, row := .I]
top.ten <- state.per.cap.agg[row < 11, "state"]
state.per.cap.series <- state.per.cap[state %in% top.ten$state]
state.per.cap.plot <- ggplot(state.per.cap.series[date >= "2020-03-01"], aes(x = date, y = casesPerMillion, colour = state)) +
geom_line(aes(group = state)) +
labs(x = "Date",
y = "Total confirmed COVID cases per million residents",
title = "Total confirmed COVID cases per million residents",
subtitle = paste0("States with 10 highest counts as of ", format(date.cut, "%B %d, %Y"))) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
state.per.cap.plot
Table of new cases per million residents: rolling 3-day total (all 50 states)
state.per.cap <- merge(state.raw, stay_dates, by = "state", all.x = T)
date.cut <- max(state.per.cap$date)
date.min <- max(state.per.cap$date) - 3
state.per.cap.agg <- state.per.cap[date == date.cut]
temp <- state.per.cap[date == date.min]
state.per.cap.agg[, casesPrev3 := temp$cases[match(state.per.cap.agg$state, temp$state)]]
state.per.cap.agg[, newCasesPrev3 := (cases - casesPrev3)]
state.per.cap.agg[, casesNewPerMillion := as.integer(newCasesPrev3/population * 1000000)]
state.per.cap.agg <- state.per.cap.agg[order(-casesNewPerMillion), c("state", "casesNewPerMillion")]
state.per.cap.agg[, casesNewPerMillion := comma(casesNewPerMillion)]
state.per.cap.agg
## state casesNewPerMillion
## 1: New York 1,502
## 2: New Jersey 1,118
## 3: Connecticut 807
## 4: Massachusetts 740
## 5: Louisiana 734
## 6: Rhode Island 608
## 7: District of Columbia 603
## 8: Delaware 437
## 9: Michigan 425
## 10: Pennsylvania 414
## 11: Maryland 353
## 12: Illinois 328
## 13: Georgia 313
## 14: Indiana 207
## 15: South Dakota 179
## 16: Colorado 178
## 17: Mississippi 175
## 18: Alabama 169
## 19: Washington 160
## 20: Nevada 157
## 21: Florida 148
## 22: New Mexico 144
## 23: Vermont 136
## 24: Virginia 136
## 25: Missouri 133
## 26: Texas 112
## 27: South Carolina 108
## 28: Kentucky 104
## 29: Idaho 102
## 30: Iowa 102
## 31: Tennessee 102
## 32: West Virginia 99
## 33: California 98
## 34: Utah 95
## 35: Kansas 90
## 36: Ohio 90
## 37: Oklahoma 90
## 38: Nebraska 80
## 39: New Hampshire 76
## 40: Wisconsin 76
## 41: Arizona 75
## 42: North Carolina 74
## 43: Arkansas 72
## 44: Alaska 60
## 45: North Dakota 57
## 46: Puerto Rico 53
## 47: Wyoming 46
## 48: Maine 45
## 49: Minnesota 45
## 50: Oregon 44
## 51: Hawaii 38
## 52: Montana 32
## 53: American Samoa <NA>
## 54: Guam <NA>
## 55: Northern Mariana Islands <NA>
## 56: Virgin Islands <NA>
## state casesNewPerMillion
Table of total deaths per million residents (all 50 states)
state.per.cap <- merge(state.raw, stay_dates, by = "state", all.x = T)
state.per.cap[, deathsPerMillion := as.integer(deaths/population * 1000000)]
date.cut <- max(state.per.cap$date)
state.per.cap.agg <- state.per.cap[date == date.cut]
state.per.cap.agg <- state.per.cap.agg[order(-deathsPerMillion), c("state", "deathsPerMillion")]
state.per.cap.agg[, deathsPerMillion := comma(deathsPerMillion)]
state.per.cap.agg
## state deathsPerMillion
## 1: New York 363
## 2: New Jersey 191
## 3: Louisiana 151
## 4: Michigan 107
## 5: Connecticut 106
## 6: Massachusetts 72
## 7: Washington 62
## 8: District of Columbia 45
## 9: Illinois 42
## 10: Rhode Island 40
## 11: Colorado 39
## 12: Georgia 38
## 13: Indiana 36
## 14: Vermont 36
## 15: Nevada 26
## 16: Pennsylvania 26
## 17: Mississippi 25
## 18: Delaware 23
## 19: Maryland 22
## 20: Oklahoma 20
## 21: Wisconsin 19
## 22: Kentucky 18
## 23: Ohio 18
## 24: Florida 17
## 25: Alabama 15
## 26: Missouri 15
## 27: New Hampshire 15
## 28: Kansas 14
## 29: California 13
## 30: Idaho 13
## 31: South Carolina 13
## 32: Tennessee 13
## 33: Arizona 12
## 34: Virginia 12
## 35: Maine 11
## 36: Oregon 10
## 37: Puerto Rico 10
## 38: Iowa 8
## 39: Minnesota 8
## 40: New Mexico 8
## 41: Nebraska 7
## 42: North Carolina 7
## 43: South Dakota 7
## 44: Texas 7
## 45: Alaska 6
## 46: Arkansas 6
## 47: North Dakota 6
## 48: Montana 5
## 49: Hawaii 4
## 50: Utah 4
## 51: West Virginia 2
## 52: Wyoming 0
## 53: American Samoa <NA>
## 54: Guam <NA>
## 55: Northern Mariana Islands <NA>
## 56: Virgin Islands <NA>
## state deathsPerMillion
state.per.cap.agg[, row := .I]
top.ten <- state.per.cap.agg[row < 11, "state"]
state.per.cap.series <- state.per.cap[state %in% top.ten$state]
state.per.cap.plot <- ggplot(state.per.cap.series[date >= "2020-03-01"], aes(x = date, y = deathsPerMillion, colour = state)) +
geom_line(aes(group = state)) +
labs(x = "Date",
y = "Total COVID-related deaths per million residents",
title = "Total COVID-related deaths per million residents",
subtitle = paste0("States with 10 highest counts as of ", format(date.cut, "%B %d, %Y"))) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
state.per.cap.plot
Table of new deaths per million residents: rolling 3-day total (all 50 states)
state.per.cap <- merge(state.raw, stay_dates, by = "state", all.x = T)
date.cut <- max(state.per.cap$date)
date.min <- max(state.per.cap$date) - 3
state.per.cap.agg <- state.per.cap[date == date.cut]
temp <- state.per.cap[date == date.min]
state.per.cap.agg[, deathsPrev3 := temp$deaths[match(state.per.cap.agg$state, temp$state)]]
state.per.cap.agg[, newDeathsPrev3 := (deaths - deathsPrev3)]
state.per.cap.agg[, deathsNewPerMillion := as.integer(newDeathsPrev3/population * 1000000)]
state.per.cap.agg <- state.per.cap.agg[order(-deathsNewPerMillion), c("state", "deathsNewPerMillion")]
state.per.cap.agg[, deathsNewPerMillion := comma(deathsNewPerMillion)]
state.per.cap.agg
## state deathsNewPerMillion
## 1: New York 118
## 2: New Jersey 78
## 3: Connecticut 48
## 4: Louisiana 40
## 5: Massachusetts 35
## 6: Michigan 34
## 7: Illinois 17
## 8: Indiana 15
## 9: Rhode Island 15
## 10: Colorado 13
## 11: Pennsylvania 13
## 12: Washington 12
## 13: District of Columbia 11
## 14: Georgia 11
## 15: Delaware 8
## 16: Mississippi 8
## 17: New Hampshire 8
## 18: Kentucky 7
## 19: Maryland 7
## 20: Nevada 7
## 21: Oklahoma 7
## 22: Idaho 6
## 23: Missouri 6
## 24: Ohio 6
## 25: Virginia 6
## 26: Alabama 5
## 27: Florida 5
## 28: Kansas 5
## 29: Wisconsin 5
## 30: California 4
## 31: Maine 4
## 32: Tennessee 4
## 33: Arizona 3
## 34: Minnesota 3
## 35: North Carolina 3
## 36: Oregon 3
## 37: Puerto Rico 3
## 38: South Carolina 3
## 39: South Dakota 3
## 40: Nebraska 2
## 41: New Mexico 2
## 42: North Dakota 2
## 43: Texas 2
## 44: Alaska 1
## 45: Arkansas 1
## 46: Hawaii 0
## 47: Iowa 0
## 48: Montana 0
## 49: Utah 0
## 50: Vermont 0
## 51: West Virginia 0
## 52: Wyoming 0
## 53: American Samoa <NA>
## 54: Guam <NA>
## 55: Northern Mariana Islands <NA>
## 56: Virgin Islands <NA>
## state deathsNewPerMillion
state.per.cap.agg[, row := .I]
top.ten <- state.per.cap.agg[row < 11, "state"]
state.per.cap.series <- state.per.cap[state %in% top.ten$state]
temp <- state.per.cap.series[, c("state", "date", "deaths")]
setnames(temp, "deaths", "deathsPrev3")
state.per.cap.series[, datePrev3 := date - 3]
state.per.cap.series <- merge(state.per.cap.series, temp, all.x = T, by.x = c("state", "datePrev3"), by.y = c("state", "date"))
state.per.cap.series[, newDeathsPrev3 := (deaths - deathsPrev3)]
state.per.cap.series[, deathsNewPerMillion := as.integer(newDeathsPrev3/population * 1000000)]
state.per.cap.plot <- ggplot(state.per.cap.series[date >= "2020-03-10"], aes(x = date, y = deathsNewPerMillion, colour = state)) +
geom_line(aes(group = state)) +
labs(x = "Date",
y = "New COVID-related deaths per million residents",
title = "New COVID-related deaths per million resident (3-day rolling total)",
subtitle = paste0("States with 10 highest counts as of ", format(date.cut, "%B %d, %Y"))) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
state.per.cap.plot
Table showing total cases per million and percentile for all US counties Includes our counties and the top 5 in the US for perspective
## county state casesPerMillion rawRanking percentile
## 1: Rockland New York 20,458 1 99
## 2: Blaine Idaho 19,374 2 99
## 3: Westchester New York 17,575 3 99
## 4: Nassau New York 14,842 4 99
## 5: Randolph Georgia 14,016 5 99
## 6: Davidson Tennessee 1,642 126 95
## 7: Richland South Carolina 1,003 296 90
## 8: Pierce Washington 933 336 89
## 9: York South Carolina 427 887 71
## 10: Orange California 340 1113 64
Our county percentiles over time
Table showing total deaths per million and percentile for all US counties Includes our counties and the top 5 in the US for perspective
## county state deathsPerMillion rawRanking percentile
## 1: Terrell Georgia 1,172 1 99
## 2: Dougherty Georgia 750 2 99
## 3: Greer Oklahoma 700 3 99
## 4: Baker Georgia 658 4 99
## 5: Toole Montana 633 5 99
## 6: Richland South Carolina 24 479 84
## 7: Pierce Washington 19 565 82
## 8: Davidson Tennessee 19 566 81
## 9: York South Carolina 7 800 74
## 10: Orange California 5 846 73
Our county percentiles over time
agg.cases.US <- state.raw[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.US.plot <- ggplot(agg.cases.US[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = "United States") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.US.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "Washington"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "California"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "Tennessee"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.state.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "Washington"
use.county <- "Pierce"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "California"
use.county <- "Orange"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
use.county <- "Richland"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
use.county <- "York"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "Tennessee"
use.county <- "Davidson"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
agg.cases.US <- state.raw[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.US
agg.cases.US[, total_cases_prev := temp$total_cases[match(agg.cases.US$date - 1, temp$date)]]
agg.cases.US[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.US.plot <- ggplot(agg.cases.US[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = "United States") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.US.plot
use.state <- "Washington"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev := temp$total_cases[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.state.plot
use.state <- "California"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev := temp$total_cases[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.state.plot
use.state <- "South Carolina"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev := temp$total_cases[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.state.plot
use.state <- "Tennessee"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev := temp$total_cases[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.state.plot
use.state <- "Washington"
use.county <- "Pierce"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.county
agg.cases.county[, total_cases_prev := temp$total_cases[match(agg.cases.county$date - 1, temp$date)]]
agg.cases.county[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.county.plot
use.state <- "California"
use.county <- "Orange"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.county
agg.cases.county[, total_cases_prev := temp$total_cases[match(agg.cases.county$date - 1, temp$date)]]
agg.cases.county[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.county.plot
use.state <- "South Carolina"
use.county <- "Richland"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.county
agg.cases.county[, total_cases_prev := temp$total_cases[match(agg.cases.county$date - 1, temp$date)]]
agg.cases.county[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.county.plot
use.state <- "Tennessee"
use.county <- "Davidson"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.county
agg.cases.county[, total_cases_prev := temp$total_cases[match(agg.cases.county$date - 1, temp$date)]]
agg.cases.county[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.county.plot
agg.deaths.US <- state.raw[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.US.plot <- ggplot(agg.deaths.US[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = "United States") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.deaths.US.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "Washington"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- cases.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "California"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- cases.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- cases.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "Tennessee"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- cases.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.state.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "Washington"
use.county <- "Pierce"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "California"
use.county <- "Orange"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
use.county <- "Richland"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
use.county <- "York"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "Tennessee"
use.county <- "Davidson"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
agg.deaths.US <- state.raw[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.US
agg.deaths.US[, total_deaths_prev := temp$total_deaths[match(agg.deaths.US$date - 1, temp$date)]]
agg.deaths.US[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.US.plot <- ggplot(agg.deaths.US[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = "United States") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.deaths.US.plot
use.state <- "Washington"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev := temp$total_deaths[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.state.plot
use.state <- "California"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev := temp$total_deaths[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.state.plot
use.state <- "South Carolina"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev := temp$total_deaths[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.state.plot
use.state <- "Tennessee"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev := temp$total_deaths[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.state.plot
use.state <- "Washington"
use.county <- "Pierce"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
use.state <- "California"
use.county <- "Orange"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
use.state <- "South Carolina"
use.county <- "Richland"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
use.state <- "South Carolina"
use.county <- "York"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
use.state <- "Tennessee"
use.county <- "Davidson"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
state.dt <- state.raw
state.dt[, stay_date := stay_dates$start_date[match(state.raw$state, stay_dates$state)]]
state.dt[, population := stay_dates$population[match(state.raw$state, stay_dates$state)]]
#state.dt[, flgOrder := ifelse(is.na(stay_date), 0, 1)]
state.dt[, flgOrder := ifelse(is.na(stay_date) | stay_date >= date, "No", "Yes")]
#state.dt[, ctDaysFromBaseline := ifelse(flgOrder == 0, as.integer(date - as.Date("2020-03-10")),
# as.integer(date - stay_date))]
#state.dt[, ctDaysFromBaseline := as.integer(date - stay_date)]
temp <- state.dt
temp <- temp[, c("date", "state", "cases")]
setnames(temp, "cases", "cases_prev3")
state.dt[, dtPrev3 := date - 3]
state.dt <- merge(state.raw, temp, all.x = T, by.x = c("state", "dtPrev3"), by.y = c("state", "date"))
state.dt[, casesNewPerMillion := as.integer((cases - cases_prev3)/population * 1000000)]
state.agg.comp <- state.dt[date >= "2020-03-10" & !state %in% "Puerto Rico"]
state.agg.comp <- state.agg.comp[order(date, flgOrder),
.(avgNewCases = mean(casesNewPerMillion, na.rm = T),
cts = .N),
by = c("date", "flgOrder")]
state.agg.comp.plot <- ggplot(state.agg.comp, aes(x = date, y = avgNewCases, colour = as.factor(flgOrder))) +
geom_point(aes(size = cts)) +
geom_line(aes(group = flgOrder)) +
labs(x = "Date",
y = "New confirmed COVID cases per million residents",
title = "New COVID cases vs.stay-at-home order",
subtitle = "Average of 3-day rolling totals per million residents",
size = "Count of states",
colour = "Stay-at-home order") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
state.agg.comp.plot